import React from 'react';
import { Navigate, useLocation } from 'react-router-dom';
import { authService } from '../services/api';

/**
 * 私有路由组件，只允许已登录用户访问
 * 如果未登录，重定向到登录页面
 */
const PrivateRoute = ({ children }) => {
  const token = localStorage.getItem('token');
  const location = useLocation();
  
  // 检查token，如果没有则检查用户信息
  if (!token) {
    const userInfo = authService.getUserInfo();
    if (!userInfo) {
      // 用户未登录，重定向到登录页面
      return <Navigate to="/login" state={{ from: location }} replace />;
    }
    
    // 有用户信息但没有token，生成一个模拟token并保存
    localStorage.setItem('token', 'mock-auth-token-' + Date.now());
  }

  // 已登录，显示保护的组件
  return children;
};

export default PrivateRoute; 